//724.寻找数组的中心下标

#include<iostream>
#include<vector>
using namespace std;

int pivotlndex(vector<int>& nums){
    //预处理前缀和数组
    //f[i]表示[0,i-1]之间的和
    vector<int> f(nums.size() + 1);
    //第一个值为0
    f[0] = 0;
    for (int i = 1; i < f.size();i++){
        f[i] = f[i - 1] + nums[i - 1];
    }

    //预处理后缀和数组
    //g[i]表示[i+1,n-1]之间的和
    vector<int> g(nums.size() + 1);
    //最后一个值为0
    g[nums.size() - 1] = 0;
    for (int i = nums.size() - 2;i>=0;i--){
        g[i] = g[i + 1] + nums[i + 1];
    }

    for (int i = 0; i < nums.size();i++){
        if(f[i]==g[i]){
            return i;
        }
    }

    return -1;
}

int main(){
    vector<int> v = {1, 7, 3, 6, 5, 6};

    int ret = pivotlndex(v);
    cout << ret;
    return 0;
}